package utils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

import models.Model;

/**
 * 分页信息
 * 
 * @author ultrafrog
 * @version 1.0, 2014-11-11
 * @since 1.0
 */
public class Page<T extends Model> implements Serializable {

	/** 内容 */
	private Collection<T> content;
	
	/** 总记录数 */
	private Long total;
	
	/** 当前页数 */
	private Integer page;
	
	/** 分页大小 */
	private Integer size;
	
	/** 构造函数 */
	public Page() {
		content = new ArrayList<T>();
	}
	
	/**
	 * 构造函数 
	 * 
	 * @param page
	 * @param size
	 */
	public Page(Integer page, Integer size) {
		this();
		this.page = (page == null) ? 1 : page;
		this.size = (size == null) ? 20 : size;
	}

	/**
	 * 读取总记录数
	 * 
	 * @return
	 * @see #total
	 */
	public Long getTotal() {
		return total;
	}

	/**
	 * 设置总记录数
	 * 
	 * @param total
	 * @see #total
	 */
	public void setTotal(Long total) {
		this.total = total;
	}

	/**
	 * 读取当前页数
	 * 
	 * @return
	 * @see #page
	 */
	public Integer getPage() {
		return page;
	}

	/**
	 * 设置当前页数
	 * 
	 * @param page
	 * @see #page
	 */
	public void setPage(Integer page) {
		this.page = page;
	}

	/**
	 * 读取分页大小
	 * 
	 * @return
	 * @see #size
	 */
	public Integer getSize() {
		return size;
	}

	/**
	 * 设置分页大小
	 * 
	 * @param size
	 * @see #size
	 */
	public void setSize(Integer size) {
		this.size = size;
	}

	/**
	 * 读取内容
	 * 
	 * @return
	 * @see #content
	 */
	public Collection<T> getContent() {
		return content;
	}
	
	/**
	 * 读取总页数
	 * 
	 * @return
	 */
	public Integer getTotalPage() {
		return Double.valueOf(Math.ceil(total.doubleValue() / size.doubleValue())).intValue();
	}
}
